#ifndef __Core_VecMath_h__
#define __Core_VecMath_h__


#include "gmtl/MatrixOps.h"
#include "gmtl/VecOps.h"
#include "gmtl/QuatOps.h"

#include "gmtl/Xforms.h"			// xform, operator *
#include "gmtl/Generate.h"			// makeVec3, translate, scale ... etc

#include "Core/BasicTypes.h"

namespace Orca {

	vec3 toVec3(const vec2 &xy, float z);
	vec3 toVec3(const vec4 &v);
	vec4 toVec4(const vec4 &xy, float z, float w);
	vec4 toVec4(const vec3 &xyz, float w);

	mtx33 get3x3(const mtx44 &mtx4);

	mtx22 identity2();
	mtx33 identity3();
	mtx44 identity4();

	mtx22 rotate(const float angle);
	mtx44 rotateX(const float angle);
	mtx44 rotateY(const float angle);
	mtx44 rotateZ(const float angle);
	mtx44 rotateXY(const float angleX, const float angleY);
	mtx44 rotateYX(const float angleX, const float angleY);
	mtx44 rotateZXY(const float angleX, const float angleY, const float angleZ);
	mtx44 translate(const vec3 &v);
	mtx44 translate(const float x, const float y, const float z);
	mtx44 scale(const float x, const float y, const float z);
	
	mtx44 cubeViewMatrix(CubeMapSide side);
};

#endif	// __Core_VecMath_h__